// 观察者模式（Observer Pattern）是一种行为型设计模式，其核心是建立一对多的依赖关系。
// 当一个对象（被观察者/主题）的状态发生变化时，所有依赖它的对象（观察者）会自动收到通知并更新。

// 被观察者
class Subject {
  constructor() {
    this.observers = [];
  }

  addObserver(ob) {
    this.observers.push(ob);
  }

  removeObserver(observerToRemove) {
    this.observers = this.observers.filter((ob) => ob !== observerToRemove);
  }

  notify(data) {
    this.observers.forEach((ob) => ob.update(data));
  }
}

// 观察者
class Observer {
  constructor() {}

  update(data) {
    console.log(`收到被观察者状态：${data}`);
  }
}

const sub = new Subject();

const ob1 = new Observer();
const ob2 = new Observer();

sub.addObserver(ob1);
sub.addObserver(ob2);

sub.notify("Flying");
sub.notify("Jumping");
